"""
Python支持函数的递归调用，它是一种函数嵌套调用的特殊形式，即函数直接或间接地调用其本身。直接递归调用是在函数中调用自身

def fun():			#定义fun()函数
    fun()				#调用fun()函数

间接递归调用是在fun()函数中调用fun1()函数，而fun1()函数又调用了fun()函数
def fun():			#定义fun()函数
    fun1()				#调用fun1()函数
def fun1():			#定义fun1()函数
    fun()				#调用fun()函数

可以看出，这两种递归调用都是无休止地调用自身。因此，为了防止无限递归，所有递归函数都需要设定终止条件。

【例5-13】计算斐波那契数列的第n项。斐波那契数列从第3项开始，元素的值为前两个元素相加得到，如1、1、2、3、5、8、13、21、34、55。
【问题分析】定义函数fib(n)计算数列的第n项，由题可知fib(n)=fib(n-1)+fib(n-2)，因此可使用递归函数解决该问题。
【参考代码】
【程序说明】本例题中，n=1和n=2时都返回1，这就是该函数的终止条件。当n等于5时，该程序的执行过程如图5-15所示。
"""

def fib(n):
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)
n = int(input('请输入一个正整数：'))
print('斐波那契数列的第{}项为：{}'.format(n, fib(n)))
